-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Implement auto-start for pre- and post-game launch #31
base: main
Are you sure you want to change the base?
Conversation
i would really love this, just commenting to maybe bump it a little (: |
I don't have the capacity to review XLCore stuff anymore, so I'll probably have to hand this stuff off. Maybe @BitsOfAByte wants to take it? |
I should have some time to review & test this within a week or two |
I probably need to either move the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be beneficial to rephrase pre-game
& post-game
to pre-launch
and post-launch
for clarity as post-game
sounds more like a script that would run on exit.
Additionally, I believe scripts should handle running things inside of wine instead of us doing it for them, although I'm not sure how others feel about this and I'm happy with the idea if it would make things easier for others.
Otherwise LGTM
Agreed, will do that after work today.
I don't know about this. Since I hang around in the IINACT Discord a lot to help people getting it to run (before it turned into a plugin), I experienced first hand just how many steps and hurdles there are for people run something inside the correct prefix and the correct Wine version. Running it over XL alleviates those issues a little, though it takes away some control. Example: If you want to use imgoverlay, you would set One compromise I could think of is to expose environment variables "evaluated" from XL, like setting |
I like the idea of scripts having access to certain environment variables when being run by XL as it saves us from having to run anything directly in-prefix. If we go down this route I don't think it's unreasonable to directly set |
Running things inside the prefix programmatically is super frustrating. If you're doing anything nontrivial, you have to (aiui) get things like the environment variables to configure DXVK and esync/fsync correct and guess the right path to the wine binary xlcore is going to use, and the documentation for that is basically "a single pin in #linux-and-deck from 2022". If I just want to e.g. "run the wine-discord-ipc-bridge exe before the game starts", I don't want to have to write a script to do that, I want to click a button, select "wine" and "before startup" in a dropdown, and double-click the exe... |
This is a problem way beyond just this feature, I do admit we need to do better on documentation for XLCore.
Exposing environment variables to the scripts that provide wine information would make running things easy as it wouldn't require guessing prefix locations and it allows for more control over the auto launch experience, at most it'd be 2-3 lines in a script if you don't need to run anything else. |
I know it's not what you want, but you will always be able to do more in a script than with a UI. If I now add a table for environment variables, the next thing is going to be specifying arguments, then a delay before/after launch, then being able to run multiple programs one after another but some others can start at the same time. And maybe even relations, so one software dies when another is shut down... Goes on and on. All of these things, you can already do with just a single script and with so much more control over what runs where and how. It is not ideal from a usability standpoint, but it is for simplicity. Also for sanity, because spawning processes like these with a build-up like from a UI make it increasingly more difficult to debug. |
i agree, as much as a UI for every little thing would be nice i'd say it's very out of the scope of this launcher. a script might be a little user unfriendly, but it's easy enough to just write a good script once and share it around, so i think this is a really good compromise. |
you neglect the impact on my mental health from having to write more bash :p but yeah, fair. if you can only set one path to a script, though, why make it configurable at all? why not just run |
Alternatively this could also be implemented as |
This PR implements the autostart tab with options to run a script
The Wine options are hidden on non-Unix operating systems.
This PR relies on this PR on FFXIVQuickLauncher and cannot run without it.
The pre-game launch scripts additionally have the option to be waited on before the game launches.
An example use-case for this PR would be running either ACT or IINACT, either before or after the game has started.
An additional idea would be for a post-game script which executes after the game process has exited for cleaning up.
A screenshot of the tab: